const path = require('path');

class DownloadMiddleware {
    /**
     * 构造函数，可指定需要强制下载的文件扩展名
     * @param {string[]} exts - 需要强制下载的文件扩展名数组，如 ['.json', '.jmx']
     */
    constructor(exts = ['.json', '.jmx']) {
        this.extensions = exts;
        this.middleware = this.middleware.bind(this);
    }

    /**
     * 中间件核心逻辑
     * @param {Object} req - Express 请求对象
     * @param {Object} res - Express 响应对象
     * @param {Function} next - 下一步中间件函数
     */
    middleware(req, res, next) {
        const filePath = req.path;
        
        // 检查当前请求的文件是否需要强制下载
        const needForceDownload = this.extensions.some(ext => 
            filePath.toLowerCase().endsWith(ext.toLowerCase())
        );

        if (needForceDownload) {
            // 提取文件名并设置响应头
            const fileName = path.basename(filePath);
            res.setHeader('Content-Disposition', `attachment; filename="${fileName}"`);
        }

        next();
    }
}

module.exports = DownloadMiddleware;
    